

using System;
using System.Text;

using NHibernate;
using NHibernate.Cfg;
using NHibernate.Criterion;
using NHibernate.Exceptions;

using SpotifyGenNHibernate.EN.Spotify;
using SpotifyGenNHibernate.CAD.Spotify;

namespace SpotifyGenNHibernate.CEN.Spotify
{
        public partial class CancionCEN
        {
        private ICancionCAD _ICancionCAD;

        public CancionCEN(ICancionCAD _ICancionCAD)
        {
                this._ICancionCAD = _ICancionCAD;
        }

        public int New_ (String p_nombre, double p_duracion, SpotifyGenNHibernate.Enumerated.Spotify.TGenerosEnum p_genero, bool p_comprable, double p_precio, Nullable<DateTime> p_fechaLanzamiento, int p_year, bool p_disponible, System.Collections.Generic.IList<int> p_artista, System.Collections.Generic.IList<int> p_albumes)
        {
                CancionEN cancionEN = null;
                int oid;

                //Initialized CancionEN
                cancionEN = new CancionEN ();
                cancionEN.Nombre = p_nombre;
                cancionEN.Duracion = p_duracion;
                cancionEN.Genero = p_genero;
                cancionEN.Comprable = p_comprable;
                cancionEN.Precio = p_precio;
                cancionEN.FechaLanzamiento = p_fechaLanzamiento;
                cancionEN.Year = p_year;
                cancionEN.Disponible = p_disponible;
                if (p_artista != null) {
                        cancionEN.Artista = new System.Collections.Generic.List<SpotifyGenNHibernate.EN.Spotify.ArtistaEN>();
                        foreach (int item in p_artista) {
                                SpotifyGenNHibernate.EN.Spotify.ArtistaEN en = new SpotifyGenNHibernate.EN.Spotify.ArtistaEN ();
                                en.Id = item;
                                cancionEN.Artista.Add (en);
                        }
                }
                if (p_albumes != null) {
                        cancionEN.Albumes = new System.Collections.Generic.List<SpotifyGenNHibernate.EN.Spotify.AlbumEN>();
                        foreach (int item in p_albumes) {
                                SpotifyGenNHibernate.EN.Spotify.AlbumEN en = new SpotifyGenNHibernate.EN.Spotify.AlbumEN ();
                                en.Id = item;
                                cancionEN.Albumes.Add (en);
                        }
                }
                //Call to CancionCAD

                oid = _ICancionCAD.New_ (cancionEN);
                return oid;
        }

        public void Destroy (int id)
        {
                _ICancionCAD.Destroy (
                        id

                        );
        }

        public void Editar (int p_Cancion_OID, String p_nombre, double p_duracion, SpotifyGenNHibernate.Enumerated.Spotify.TGenerosEnum p_genero, bool p_comprable, double p_precio, Nullable<DateTime> p_fechaLanzamiento, int p_year, bool p_disponible)
        {
                CancionEN cancionEN = null;

                //Initialized CancionEN
                cancionEN = new CancionEN ();
                cancionEN.Id = p_Cancion_OID;
                cancionEN.Nombre = p_nombre;
                cancionEN.Duracion = p_duracion;
                cancionEN.Genero = p_genero;
                cancionEN.Comprable = p_comprable;
                cancionEN.Precio = p_precio;
                cancionEN.FechaLanzamiento = p_fechaLanzamiento;
                cancionEN.Year = p_year;
                cancionEN.Disponible = p_disponible;
                //Call to CancionCAD

                _ICancionCAD.Editar (cancionEN);
        }

        public System.Collections.Generic.IList<CancionEN> Buscar (int first, int size)
        {
                System.Collections.Generic.IList<CancionEN> list = null;

                list = _ICancionCAD.Buscar (first, size);
                return list;
        }
        public System.Collections.Generic.IList<CancionEN> ConsultarParaRadio (int p_oid)
        {
                return _ICancionCAD.ConsultarParaRadio (p_oid);
        }
        public System.Collections.Generic.IList<CancionEN> FiltrarPorAlbum (int p_oid)
        {
                return _ICancionCAD.FiltrarPorAlbum (p_oid);
        }
        public System.Collections.Generic.IList<CancionEN> ConsultarListasDeExitosPorCancionesParaMi (int p_oid)
        {
                return _ICancionCAD.ConsultarListasDeExitosPorCancionesParaMi (p_oid);
        }
        public System.Collections.Generic.IList<CancionEN> ConsultarListasDeExitosPorCancionesEnMiPais (int p_oid)
        {
                return _ICancionCAD.ConsultarListasDeExitosPorCancionesEnMiPais (p_oid);
        }
        public System.Collections.Generic.IList<CancionEN> ConsultarListasDeExitosPorCancionesEnMiContinente (int p_oid)
        {
                return _ICancionCAD.ConsultarListasDeExitosPorCancionesEnMiContinente (p_oid);
        }
        public System.Collections.Generic.IList<CancionEN> ConsultarListasDeExitosPorArtistasParaMi (int p_oid)
        {
                return _ICancionCAD.ConsultarListasDeExitosPorArtistasParaMi (p_oid);
        }
        public System.Collections.Generic.IList<CancionEN> ConsultarListasDeExitosPorArtistasEnMiPais (int p_oid)
        {
                return _ICancionCAD.ConsultarListasDeExitosPorArtistasEnMiPais (p_oid);
        }
        public System.Collections.Generic.IList<CancionEN> ConsultarListasDeExitosPorArtistasEnMiContinente (int p_oid)
        {
                return _ICancionCAD.ConsultarListasDeExitosPorArtistasEnMiContinente (p_oid);
        }
        public System.Collections.Generic.IList<CancionEN> ConsultarListasDeExitosPorAlbumesParaMi (int p_oid)
        {
                return _ICancionCAD.ConsultarListasDeExitosPorAlbumesParaMi (p_oid);
        }
        public System.Collections.Generic.IList<CancionEN> ConsultarListasDeExitosPorAlbumesEnMiPais (int p_oid)
        {
                return _ICancionCAD.ConsultarListasDeExitosPorAlbumesEnMiPais (p_oid);
        }
        public System.Collections.Generic.IList<CancionEN> ConsultarListasDeExitosPorAlbumesEnMiContinente (int p_oid)
        {
                return _ICancionCAD.ConsultarListasDeExitosPorAlbumesEnMiContinente (p_oid);
        }
        }
}
